#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"patient0.h"


void menu_patient()
{char i_d[100],ident[100];
patient p1;
char chemin[MAX],name[100],first_name[100];
int i;
strcpy(i_d,"0");

printf("1: enregistrer_patient \n");
printf("2:liste_patients \n");
printf("3:chercher_patient par nom \n");
printf("4:chercher_patient par date_sortie \n");
printf("5:chercher patient par date d'entree \n");
printf("6:supprimer_patient \n");
printf("7:modifier donnes patient\n");
printf("taper autre bouton pour quitter menu \n");



printf ("donner votre choix \n");
scanf("%d",&i);

switch (i){
case 1:ajout_patient (p1) ;
menu_patient();
break;
case 2:liste_patient(p1);
menu_patient();
break;
case 3:recherche_name(name,first_name);
menu_patient();
break;
case 4:recherche_date();
menu_patient();
break;
case 5:recherche_date_entree();
menu_patient();
break;
case 6:supprimer_patient(&p1,i_d);
menu_patient();

break;
case 7:modif();
menu_patient ();
break;


default :

break;
}
}

void ajout_patient(patient p)
{
//char id[100],name[100],first_name[100],gender[100],state[100],iden[100];
//int old,year,day,month,test1,test2,a,biss;
//long int carte;
//a=rechercher_patient(p,iden);
//if (a)
//{printf("la personne existe deja dans la base de données \n");}
//else {


char chemin[]="fichiers_patients.txt";
FILE *f;
f=fopen(chemin,"a");
if(f==NULL)
{
printf("\n Impossible d'ouvrir le fichier\n");
}

else
{
/*//date sortie
strcpy(p.date_sortie,"unknown");
//id
strcpy(p.identifiant,iden);


//name
do{
printf(" donner le nom du patient \n");
scanf("%s",name);
}while(strlen(name)>30);
strcpy(p.nom,name);
//prenom
do{
printf(" donner le prenom du patient \n");
scanf("%s",first_name);
}while(strlen(first_name)>30);
strcpy(p.prenom,first_name);
//age
do{
printf(" donner l'age du patient \n");
scanf("%d",&old);
}while(old<0||old>120);
p.age=old;
//cin
do{
printf(" donner cin du patient \n");
scanf("%ld",&carte);
}while(carte<0);
p.cin=carte;
//sexe
do{
printf(" donner le sexe du patient (m pour male et f pour feminin) \n");
scanf("%s",gender);
}while ((strcmp(gender,"m")!=0)&&(strcmp(gender,"f")!=0));
strcpy(p.sexe,gender);

//etat
do{
printf(" donner etat du patient(stable ou critique) \n");
scanf("%s",state);
}while ((strcmp(state,"stable")!=0)&&(strcmp(state,"critique")!=0));
strcpy(p.etat,state);
//day,year,month
//year
do{
printf("donner l'annee associe \n");
scanf("%d",&year);
}while(year<1980||year>2050);
if (year%4==0) biss=1; else biss=0;
p.annee=year;
//month
do{
printf("donner  le mois associé \n");
scanf("%d",&month);
}while(month<=0||month>12);
p.mois=month;

//day
do{
printf("donner le jour d'entrée du patient \n");
scanf("%d",&day);
if (month==1)
{test1=1;test2=31;}
else if (month==2)
{if (biss==1)

{test1=1;test2=29;}
else if (biss==0) {test1=1;test2=28;}}
else if (month==3)
{test1=1;test2=31;}
else if (month==4)
{test1=1;test2=30;}
else if (month==5)
{test1=1;test2=31;}
else if (month==6)
{test1=1;test2=30;}
else if (month==7)
{test1=1;test2=31;}
else if (month==8)
{test1=1;test2=31;}
else if (month==9)
{test1=1;test2=30;}
else if (month==10)
{test1=1;test2=31;}
else if (month==11)
{test1=1;test2=30;}
else if (month==12)
{test1=1;test2=31;}

}while(day<test1||day>test2);
p.jour=day;

fprintf(f,"%s %s %d %ld %s %s %s %d %d %d %s
\n",p.nom,p.prenom,p.age,p.cin,p.sexe,p.identifiant,p.etat,p.jour,p.mois,p.annee,p.date_sortie);
}*/

fprintf(f,"%s %s %d %ld %s %s %s %d %d %d %s
\n",p.nom,p.prenom,p.age,p.cin,p.sexe,p.identifiant,p.etat,p.jour,p.mois,p.annee,p.date_sortie);

fclose(f);
}
}








void liste_patient(patient p )
{
char chemin[]="fichiers_patients.txt";

FILE *f;


f=fopen(chemin,"r");
if(f==NULL){
printf("\nImpossible\n");
}else{
while( fscanf(f,"%s %s %d %ld %s %s %s %d %d %d
%s",p.nom,p.prenom,&p.age,&p.cin,p.sexe,p.identifiant,p.etat,&p.jour,&p.mois,&p.annee,p.date_sortie)
 != EOF)
{

printf("\n Nom : %s",p.nom);
printf("\n prenom : %s",p.prenom);
printf("\n age : %d",p.age);
printf("\n cin : %ld",p.cin);
printf("\n sexe : %s",p.sexe);
printf("\n l'identifiant du patient : %s",p.identifiant);
printf("\n l'etat du patient : %s",p.etat);
printf("\n le jour d'entrée: %d",p.jour);
printf("\n le mois d'entrée: %d",p.mois);
printf("\n l'année d'entrée: %d\n",p.annee);
printf("\n date sortie: %s \n",p.date_sortie);
}
}
fclose(f);
}


int rechercher_patient(patient p,char iden[100])
{
char chemin[]="fichiers_patients.txt";
FILE *f;
int t=0;
char id[100];

f=fopen(chemin,"r");
if (f==NULL) printf("\nimpossible\n");
else{
do{
printf("\nsaisir id\n");
scanf("%s",id);
 }while (strlen(id)>30);
while(fscanf(f,"%s %s %d %ld %s %s %s %d %d %d
%s",p.nom,p.prenom,&p.age,&p.cin,p.sexe,p.identifiant,p.etat,&p.jour,&p.mois,&p.annee,p.date_sortie)!=EOF
 )
{

if(strcmp(id,p.identifiant)==0){
t=1;
printf ("\n%s %s %d %ld %s %s %s %d %d %d%s
\n",p.nom,p.prenom,p.age,p.cin,p.sexe,p.identifiant,p.etat,p.jour,p.mois,p.annee,p.date_sortie);
break;
}
}
if(t==0){strcpy(iden,id);}


fclose(f);
return(t);
}
}

int rechercher1_patient(patient p,char id[])
{

char chemin[]="fichiers_patients.txt";
FILE *f;
int t=0;


f=fopen(chemin,"r");
if (f==NULL) printf("\nimpossible\n");
else{

while(fscanf(f,"%s %s %d %ld %s %s %s %d %d %d
%s",p.nom,p.prenom,&p.age,&p.cin,p.sexe,p.identifiant,p.etat,&p.jour,&p.mois,&p.annee,p.date_sortie)!=EOF
 )
{

if(strcmp(id,p.identifiant)==0){
t=1;
printf ("\n%s %s %d %ld %s %s %s %d %d %d
%s\n",p.nom,p.prenom,p.age,p.cin,p.sexe,p.identifiant,p.etat,p.jour,p.mois,p.annee,p.date_sortie);
break;
}
}



fclose(f);

return(t);
}
}

void supprimer_patient (patient *p,char i_d[100])
{int a,t;
char id[100];
FILE *f1,*f2;
char chemin[]="fichiers_patients.txt";
char temp[]="temp.txt";


f1=fopen(chemin,"r");
f2=fopen(temp,"w");
if(f1==NULL||f2==NULL)
printf("\n Impossible d'ouvrir le fichier \n");

else{
t=0;
if (strcmp(i_d,"0")==0)
{printf("\ndonner id\n");
scanf("%s",id);}
else strcpy(id,i_d);
rewind(f1);


while(fscanf(f1,"%s %s %d %ld %s %s %s %d %d %d
%s",p->nom,p->prenom,&p->age,&p->cin,p->sexe,p->identifiant,p->etat,&p->jour,&p->mois,&p->annee,p->date_sortie)!=EOF
){
 if(strcmp(p->identifiant,id)==0){
t=1 ;printf("\ndone!\n");

break;}
}

if (t!=1)
printf("identifiant inexistant \n");

rewind(f1);

while (fscanf(f1,"%s %s %d %ld %s %s %s %d %d %d
%s",p->nom,p->prenom,&p->age,&p->cin,p->sexe,p->identifiant,p->etat,&p->jour,&p->mois,&p->annee,p->date_sortie)!=EOF
){

    if (strcmp(p->identifiant,id) != 0)
   fprintf (f2,"%s %s %d %ld %s %s %s %d %d %d
%s\n",p->nom,p->prenom,p->age,p->cin,p->sexe,p->identifiant,p->etat,p->jour,p->mois,p->annee,p->date_sortie);
}
fclose(f1);
fclose(f2);
remove(chemin);
rename(temp,chemin);


}
}
int recherche_name(char name[100],char first_name[100])
{patient p;
int t;
char chemin[]="fichiers_patients.txt";
FILE *f;
t=0;
f=fopen(chemin,"r");
if (f==NULL) printf("\nimpossible\n");
else{

printf("\nsaisir nom\n");
scanf("%s",name);
printf("\nsaisir prenom\n");
scanf("%s",first_name);

while(fscanf(f,"%s %s %d %ld %s %s %s %d %d %d
%s",p.nom,p.prenom,&p.age,&p.cin,p.sexe,p.identifiant,p.etat,&p.jour,&p.mois,&p.annee,p.date_sortie)!=EOF
 )
{

if((strcmp(name,p.nom)==0) && (strcmp(first_name,p.prenom)==0)){

printf ("\nnom:%s \nprenom:%s \nage:%d \ncin:%ld \nsexe:%s
\nidentifiant:%s \netat:%s \njour:%d \nmois:%d \nannee:%d
\ndate_sortie:%s\n",p.nom,p.prenom,p.age,p.cin,p.sexe,p.identifiant,p.etat,p.jour,p.mois,p.annee,p.date_sortie);t=1;}

}}
fclose(f);
if (t==0)
printf("nom et/ou prenom inexistant\n");
return(t);
}//end

void modif()
{//o1
char leave[100],state[100],name[100],first_name[100],i_d[100];
patient p1,p;
int t,choix;
FILE *f;
char chemin[]="fichiers_patients.txt";
t=recherche_name(name,first_name);


if (t==1)
{//o2


f=fopen(chemin,"r");
if (f==NULL) printf("\nimpossible\n");
else{//o3
while(fscanf(f,"%s %s %d %ld %s %s %s %d %d %d
%s",p.nom,p.prenom,&p.age,&p.cin,p.sexe,p.identifiant,p.etat,&p.jour,&p.mois,&p.annee,p.date_sortie)!=EOF
 )
{//O4w

if((strcmp(name,p.nom)==0) && (strcmp(first_name,p.prenom)==0)){//o5
strcpy(p1.nom,p.nom);
strcpy(p1.prenom,p.prenom);
p1.age=p.age;
p1.cin=p.cin;
strcpy(p1.sexe,p.sexe);
strcpy(p1.identifiant,p.identifiant);
p1.jour=p.jour;
p1.mois=p.mois;
p1.annee=p.annee;
printf("voulez vous changer l'etat du patient(1),date sortie(2),les
2(3),quitter(autre chiffre) \n");
scanf("%d",&choix);
switch (choix){//o6
case 1:strcpy(p1.date_sortie,p.date_sortie);
do{
printf(" donner etat du patient(stable ou critique ou mort) \n");
scanf("%s",state);
}while ((strcmp(state,"stable")!=0)&&(strcmp(state,"critique")!=0)&&(strcmp(state,"mort")!=0));
strcpy(p1.etat,state);

fclose(f);
supprimer_patient (&p,p.identifiant);
f=fopen(chemin,"a");
if(f==NULL)

printf("\n Impossible d'ouvrir le fichier\n");


else
{fprintf(f,"%s %s %d %ld %s %s %s %d %d %d %s
\n",p1.nom,p1.prenom,p1.age,p1.cin,p1.sexe,p1.identifiant,p1.etat,p1.jour,p1.mois,p1.annee,p1.date_sortie);
fclose(f);}
break;
case 2:strcpy(p1.etat,p.etat);
printf("donner la date de sortie du patient(xx/xx/xx) \n");
scanf("%s",leave);
strcpy(p1.date_sortie,leave);
fclose(f);
supprimer_patient (&p,p.identifiant);
f=fopen(chemin,"a");
if(f==NULL)

printf("\n Impossible d'ouvrir le fichier\n");


else
{fprintf(f,"%s %s %d %ld %s %s %s %d %d %d %s
\n",p1.nom,p1.prenom,p1.age,p1.cin,p1.sexe,p1.identifiant,p1.etat,p1.jour,p1.mois,p1.annee,p1.date_sortie);
fclose(f);}
break;
case 3:do{
printf(" donner etat du patient(stable ou critique ou mort) \n");
scanf("%s",state);
}while ((strcmp(state,"stable")!=0)&&(strcmp(state,"critique")!=0)&&(strcmp(state,"mort")!=0));
strcpy(p1.etat,state);
printf("donner la date de sortie du patient \n");
scanf("%s",leave);
strcpy(p1.date_sortie,leave);
fclose(f);
supprimer_patient (&p,p.identifiant);
f=fopen(chemin,"a");
if(f==NULL)

printf("\n Impossible d'ouvrir le fichier\n");


else
{fprintf(f,"%s %s %d %ld %s %s %s %d %d %d %s
\n",p1.nom,p1.prenom,p1.age,p1.cin,p1.sexe,p1.identifiant,p1.etat,p1.jour,p1.mois,p1.annee,p1.date_sortie);
fclose(f);}
break;
default:printf("vous avez choisi de quitter \n");fclose(f);
}//c6
}//c5
}//c4

}//c3
}//c2
}//c1

void recherche_date()
{patient p;
int t;
char chemin[]="fichiers_patients.txt",date[100];
FILE *f;
t=0;
f=fopen(chemin,"r");
if (f==NULL) printf("\nimpossible\n");
else{

printf("\nsaisir date desiree(xx/xx/xx,ou unknown)\n");
scanf("%s",date);


while(fscanf(f,"%s %s %d %ld %s %s %s %d %d %d
%s",p.nom,p.prenom,&p.age,&p.cin,p.sexe,p.identifiant,p.etat,&p.jour,&p.mois,&p.annee,p.date_sortie)!=EOF
 )
{

if((strcmp(date,p.date_sortie)==0) ){

printf ("\nnom:%s prenom:%s age:%d cin:%ld sexe:%s identifiant:%s
etat:%s jour:%d mois:%d annee:%d
date_sortie:%s\n",p.nom,p.prenom,p.age,p.cin,p.sexe,p.identifiant,p.etat,p.jour,p.mois,p.annee,p.date_sortie);t=1;}

}}
fclose(f);
if (t==0)
printf("date sortie inexistante\n");

}//end


void recherche_date_entree()
{patient p;
int t,day,month,year;
char chemin[]="fichiers_patients.txt";
FILE *f;
t=0;
f=fopen(chemin,"r");
if (f==NULL) printf("\nimpossible\n");
else{
do {
printf("\nsaisir jour d'entree\n");
scanf("%d",&day);
}while (day<1||day>31);
do {
printf("\nsaisir mois d'entree\n");
scanf("%d",&month);
}while (month<1||month>12);
do {
printf("\nsaisir annee d'entree\n");
scanf("%d",&year);
}while (year<1980||year>2050);
while(fscanf(f,"%s %s %d %ld %s %s %s %d %d %d
%s",p.nom,p.prenom,&p.age,&p.cin,p.sexe,p.identifiant,p.etat,&p.jour,&p.mois,&p.annee,p.date_sortie)!=EOF
 )
{

if(year==p.annee && month==p.mois && day==p.jour ){

printf ("\nnom:%s prenom:%s age:%d cin:%ld sexe:%s identifiant:%s
etat:%s jour:%d mois:%d annee:%d
date_sortie:%s\n",p.nom,p.prenom,p.age,p.cin,p.sexe,p.identifiant,p.etat,p.jour,p.mois,p.annee,p.date_sortie);t=1;}

}}
fclose(f);
if (t==0)
printf("date d'entree inexistante\n");

}//end
